#include <iostream>
#include <memory>
#include <stdio.h>
#include <string.h>

class Student {
public:
  Student() { std::cout << "Construct student" << std::endl; }
  ~Student() { std::cout << "Destruct student" << std::endl; }

  bool Register() { return true; }
  bool Enroll() { return true; }
};

int main() {
  std::unique_ptr<Student> p(new Student());
  if (!p->Register()) {
    // 不需要任何操作，p指向的资源会自动释放
    return -1;
  }

  if (!p->Enroll()) {
    // 不需要任何操作，p指向的资源会自动释放
    return -2;
  }

  // 不需要任何操作，p指向的资源会自动释放
  return 0;
}